import math,re


def gen(batch_size):
    with open("../data/jaychou_lyrics.txt","r", encoding="utf-8") as f:
        line = f.readlines()

    line_count = len(line)

    batch_count = math.ceil(line_count / batch_size)

    for i in range(batch_count):
        start = i * batch_size
        end = (i + 1) * batch_size
        data = line[start:end]
        for i in data:
            ret = re.match(r'(.*)[\\n]?',i)
            # ret = re.match('(.*)\\n?',i)
            print(ret)
        yield data

# gen1 = gen(5)
# print(next(gen1))
"""
第一个表达式 r'(.*)[\\n]?'
    [\\n]? 表示匹配一个可选的字符类，包含 [](file://D:\深圳AI-02期\01-Python进阶\SZAI02-PythonProject\day01\01-回顾面向过程编程.py) 和 n 两个字符
    这里的 [\\n] 并不是匹配换行符，而是匹配反斜杠字符 [] 或字母 n
    由于字符串 '想要有直升机\n' 中没有 [] 或 n 字符，所以 [\\n]? 匹配0个字符
    (.*) 贪婪匹配整个字符串内容，包括换行符 \n
    因此匹配结果包含整个字符串，span为(0, 7)
"""
print(re.match(r'(.*)[\\n]?','想要有直升机\n'))
# 输出：<re.Match object; span=(0, 6), match='想要有直升机'>

"""
第二个表达式 r'(.*)\\n?'
    \\n? 表示匹配一个反斜杠 [] 后跟可选的字母 n
    字符串 '想要有直升机\n' 中同样没有 [] 和 n 的组合
    但这里正则引擎尝试匹配字面意思的 [] 和 n，而不是换行符
    由于找不到匹配，整个表达式匹配失败，返回 None
"""
print(re.match(r'(.*)\\n?','想要有直升机\n'))
# 输出：None